package com.wangzhixuan.filter;

import com.wangzhixuan.constant.SystemConstant;
import com.wangzhixuan.db.bean.Customer;
import com.wangzhixuan.util.HttpUtils;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

/**
 */
@Component
public class GlobalInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request,
            HttpServletResponse response, Object handler) throws Exception {

        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request,
            HttpServletResponse response, Object handler,
            ModelAndView modelAndView) throws Exception {
        response.setHeader("Cache-Control", "public");
        response.setDateHeader("Expires", 86400);
        if (null == modelAndView) {
            return;
        }
        Customer currentCustomer = (Customer) request.getSession().getAttribute(SystemConstant.SESSION_CUSTOMER_KEY);
        if (currentCustomer != null) {
            modelAndView.addObject("currentCustomer", currentCustomer);
        }
        // System paramters
        String basePath = HttpUtils.getBasePath(request);
        String contextPath = HttpUtils.getContextPath(request);
        modelAndView.addObject("basePath", basePath);
        modelAndView.addObject("contextPath", contextPath);
    }

    @Override
    public void afterCompletion(HttpServletRequest request,
            HttpServletResponse response, Object handler, Exception ex)
            throws Exception {

    }

}
